import java.util.Scanner;

public class day4 {
    /**
     * HJ63 DNA序列
     * https://www.nowcoder.com/practice/e8480ed7501640709354db1cc4ffd42a?tpId=37&tqId=21286&ru=/exam/oj
     */
    public static void main1(String[] args) {
        Scanner in = new Scanner(System.in);
        char[] str = in.next().toCharArray();
        int len = in.nextInt(); // 窗口的长度

        // 定长 —— 滑动窗口
        int start = 0; // 窗口中 C+G 的个数最大值的起始位置
        int count = 0; // 统计当前窗口内 C+G 的个数
        int maxCount = 0; // 统计以前的窗口内的 C+G 的个数
        int n = str.length;
        int left = 0,right = 0;
        while(right < n) {
            // 判断当前这个位置是否C或者G进行统计个数
            if(str[right] == 'G' || str[right] == 'C') {
                count++;
            }
            // 判断当前窗口中的值是否超过窗口的定值，超过即进行出窗口
            while(right - left + 1 > len) {
                if(str[left] == 'G' || str[left] == 'C') {
                    count--;
                }
                left++;
            }
            if(right - left + 1 == len) {
                if(count > maxCount) {
                    maxCount = count;
                    start = left;
                }
            }
            right++;
        }
        for(int i = start;i < start + len;i++) {
            System.out.print(str[i]);
        }
    }


    /**
     * 神奇数
     * https://www.nowcoder.com/questionTerminal/99fa7be28d5f4a9d9aa3c98a6a5b559a
     */
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int a = in.nextInt(),b = in.nextInt();
        int ret = 0;
        for(int i = Math.max(a,10);i <= b;i++) {
            // Math.max(a,10) 是为了不出现前导0 的情况，因为需要选择两个数
            // 而小于10 的只存在一个数
            ret += check(i);
        }
        System.out.print(ret);
    }

    public static int check(int x) {
        // 把x 的每一位值都取出来
        int[] nums = new int[10];
        int index = 0;
        while(x != 0) {
            nums[index++] = (x % 10);
            x /= 10;
        }
        // 这个时候 nums 中存储的是 x 的每一位的值
        // 这时候对其进行枚举
        for(int i = 0;i < index;i++) { // 枚举每一个最为十位
            for(int j = 0;j < index;j++) { // 枚举每一个数作为个数
                if(nums[i] != 0 && i != j) {
                    int sum = nums[i] * 10 + nums[j];
                    if(isprim(sum) == true) {
                        return 1;
                    }
                }
            }
        }
        return 0;
    }

    public static boolean isprim(int x) {
        if(x < 2) {
            return false;
        }
        for(int i = 2;i < x;i++) {
            if(x % i == 0) {
                return false;
            }
        }
        return true;
    }


    /**
     * 模拟
     * QR6 字符串替换
     * https://www.nowcoder.com/practice/f094aed769d84cf3b799033c82fc1bf6?tpId=182&tqId=34710&ru=/exam/oj
     */
    public String formatString(String A, int n, char[] arg, int m) {
        // 模拟
        StringBuffer ret = new StringBuffer();
        char[] str = A.toCharArray();

        int j = 0;
        for(int i = 0;i < n;i++) {
            if(str[i] != '%') {
                ret.append(str[i]);
            }else {
                // 出现 % 并且后面为s才能进行替换
                if(i + 1 < n && str[i + 1] == 's') {
                    ret.append(arg[j++]);
                    i++;
                }else {
                    ret.append(str[i]);
                }
            }
        }

        while(j < m) {
            ret.append(arg[j++]);
        }

        return ret.toString();
    }
}
